classDiagram
    class Prototype {
        <<interface>>
        +clone(): Prototype
    }
    
    class ConcretePrototype1 {
        -field: int
        +clone(): Prototype
        +setField(field: int): void
        +getField(): int
    }

    class ConcretePrototype2 {
        -field: string
        +clone(): Prototype
        +setField(field: string): void
        +getField(): string
    }

    Prototype <|-- ConcretePrototype1 : implements
    Prototype <|-- ConcretePrototype2 : implements
